package com.ruoyi.shopping.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 优惠券对象 jy_mall_coupons
 *
 * @author ruoyi
 * @date 2022-06-28
 */
@ApiModel
public class MallCoupons extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    @Override
    public Map<String, Object> getParams() {
        return super.getParams();
    }

    //回显的值
    private transient String systematicName;

    public String getSystematicName() {
        return systematicName;
    }

    public void setSystematicName(String systematicName) {
        this.systematicName = systematicName;
    }

    /** 主键 */
    @ApiModelProperty(value = "${comment}")
    private Long id;

    /** 优惠劵名称 */
    @Excel(name = "优惠劵名称")
    @ApiModelProperty(value = "优惠劵名称")
    private String couponName;

    /** 优惠券金额 */
    @Excel(name = "优惠券金额")
    @ApiModelProperty(value = "优惠券金额")
    private BigDecimal money;

    /** 满多少元可用 */
    @Excel(name = "满多少元可用")
    @ApiModelProperty(value = "满多少元可用")
    private BigDecimal minPrice;

    /** 是否限量 */
    @Excel(name = "是否限量")
    @ApiModelProperty(value = "是否限量")
    private String limitedState;

    /** 区分优惠券和兑换码 */
    @Excel(name = "区分优惠券和兑换码")
    @ApiModelProperty(value = "区分优惠券和兑换码")
    private String distinctionCdkCoupon;

    /** 限量情况下发送数量 */
    @Excel(name = "限量情况下发送数量")
    @ApiModelProperty(value = "限量情况下发送数量")
    private Long total;

    /** 剩余数量 */
    @Excel(name = "剩余数量")
    @ApiModelProperty(value = "剩余数量")
    private Long lastTotal;

    /** 是否新人劵 */
    @Excel(name = "是否新人劵")
    @ApiModelProperty(value = "是否新人劵")
    private String newUserState;

    /** 类型 */
    @Excel(name = "类型")
    @ApiModelProperty(value = "类型")
    private String couponType;

    /** 关联的分类/商品id */
    @Excel(name = "关联的分类/商品id")
    @ApiModelProperty(value = "关联的分类/商品id")
    private String primaryKey;

    /** 是否一级分类 */
    @Excel(name = "是否一级分类")
    @ApiModelProperty(value = "是否一级分类")
    private String isFirstClassify;

    /** 一级分类Id */
    @Excel(name = "一级分类Id")
    @ApiModelProperty(value = "一级分类Id")
    private Long classifyId;

    /** 可领取开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "可领取开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "可领取开始时间")
    private Date receiveStartTime;

    /** 可领取结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "可领取结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "可领取结束时间")
    private Date receiveEndTime;

    /** 是否固定有效期 */
    @Excel(name = "是否固定有效期")
    @ApiModelProperty(value = "是否固定有效期")
    private String fixedTimeState;

    /** 可使用时间范围开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "可使用时间范围开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "可使用时间范围开始时间")
    private Date useStartTime;

    /** 可使用时间范围结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "可使用时间范围结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "可使用时间范围结束时间")
    private Date useEndTime;

    /** 有效期天数 */
    @Excel(name = "有效期天数")
    @ApiModelProperty(value = "有效期天数")
    private Long validDay;

    /** 排序 */
    @Excel(name = "排序")
    @ApiModelProperty(value = "排序")
    private Long sort;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setCouponName(String couponName)
    {
        this.couponName = couponName;
    }

    public String getCouponName()
    {
        return couponName;
    }
    public void setMoney(BigDecimal money)
    {
        this.money = money;
    }

    public BigDecimal getMoney()
    {
        return money;
    }
    public void setMinPrice(BigDecimal minPrice)
    {
        this.minPrice = minPrice;
    }

    public BigDecimal getMinPrice()
    {
        return minPrice;
    }
    public void setLimitedState(String limitedState)
    {
        this.limitedState = limitedState;
    }

    public String getLimitedState()
    {
        return limitedState;
    }
    public void setTotal(Long total)
    {
        this.total = total;
    }

    public Long getTotal()
    {
        return total;
    }
    public void setLastTotal(Long lastTotal)
    {
        this.lastTotal = lastTotal;
    }

    public Long getLastTotal()
    {
        return lastTotal;
    }
    public void setNewUserState(String newUserState)
    {
        this.newUserState = newUserState;
    }

    public String getNewUserState()
    {
        return newUserState;
    }
    public void setCouponType(String couponType)
    {
        this.couponType = couponType;
    }
    public void setDistinctionCdkCoupon(String distinctionCdkCoupon)
    {
        this.distinctionCdkCoupon = distinctionCdkCoupon;
    }

    public String getDistinctionCdkCoupon()
    {
        return distinctionCdkCoupon;
    }
    public String getCouponType()
    {
        return couponType;
    }
    public void setPrimaryKey(String primaryKey)
    {
        this.primaryKey = primaryKey;
    }

    public String getPrimaryKey()
    {
        return primaryKey;
    }
    public void setIsFirstClassify(String isFirstClassify)
    {
        this.isFirstClassify = isFirstClassify;
    }

    public String getIsFirstClassify()
    {
        return isFirstClassify;
    }
    public void setClassifyId(Long classifyId)
    {
        this.classifyId = classifyId;
    }

    public Long getClassifyId()
    {
        return classifyId;
    }
    public void setReceiveStartTime(Date receiveStartTime)
    {
        this.receiveStartTime = receiveStartTime;
    }

    public Date getReceiveStartTime()
    {
        return receiveStartTime;
    }
    public void setReceiveEndTime(Date receiveEndTime)
    {
        this.receiveEndTime = receiveEndTime;
    }

    public Date getReceiveEndTime()
    {
        return receiveEndTime;
    }
    public void setFixedTimeState(String fixedTimeState)
    {
        this.fixedTimeState = fixedTimeState;
    }

    public String getFixedTimeState()
    {
        return fixedTimeState;
    }
    public void setUseStartTime(Date useStartTime)
    {
        this.useStartTime = useStartTime;
    }

    public Date getUseStartTime()
    {
        return useStartTime;
    }
    public void setUseEndTime(Date useEndTime)
    {
        this.useEndTime = useEndTime;
    }

    public Date getUseEndTime()
    {
        return useEndTime;
    }
    public void setValidDay(Long validDay)
    {
        this.validDay = validDay;
    }

    public Long getValidDay()
    {
        return validDay;
    }
    public void setSort(Long sort)
    {
        this.sort = sort;
    }

    public Long getSort()
    {
        return sort;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("couponName", getCouponName())
                .append("money", getMoney())
                .append("minPrice", getMinPrice())
                .append("limitedState", getLimitedState())
                .append("total", getTotal())
                .append("lastTotal", getLastTotal())
                .append("newUserState", getNewUserState())
                .append("couponType", getCouponType())
                .append("primaryKey", getPrimaryKey())
                .append("isFirstClassify", getIsFirstClassify())
                .append("distinctionCdkCoupon", getDistinctionCdkCoupon())
                .append("classifyId", getClassifyId())
                .append("receiveStartTime", getReceiveStartTime())
                .append("receiveEndTime", getReceiveEndTime())
                .append("fixedTimeState", getFixedTimeState())
                .append("useStartTime", getUseStartTime())
                .append("useEndTime", getUseEndTime())
                .append("validDay", getValidDay())
                .append("sort", getSort())
                .append("delState", getDelState())
                .append("delUser", getDelUser())
                .append("delType", getDelType())
                .append("delTime", getDelTime())
                .append("createBy", getCreateBy())
                .append("createType", getCreateType())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateType", getUpdateType())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}